home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 145
/
Gekkan Dennou Club - 2000.6 Vol. 145 (Japan).7z
/
Gekkan Dennou Club - 2000.6 Vol. 145 (Japan) (Track 1).bin
/
docs
/
asm
/
main.c
< prev
next >
Wrap
C/C++ Source or Header
|
2000-05-08
|
1KB
|
63 lines
#include <stdio.h>
#include <iocslib.h>
int optime(void op_main(void), void op_init(int count), void op_tini(void), int count);
void op_main(void);
void op_init(int count);
void op_tini(void);
extern char op_name[];
int ssp;
void main(int argc, char *argv[])
{
double mpu_clock = 10.0;
int count = 1000;
int result;
double each_microsec;
double each_clock;
if (B_BPEEK((void *)0x00e8e00b) == 0xdc) {
/* X68030 */
if (B_BPEEK((void *)0x0cbc) == 0x06) {
/* 060turbo */
mpu_clock = 50.0;
} else {
/* X68030/040turbo */
mpu_clock = 25.0;
}
} else if (B_BPEEK((void *)0x00e8e00b) == 0xfe) {
/* X68000 16MHz */
mpu_clock = 16.667;
} else {
/* X68000 10MHz */
mpu_clock = 10.0;
}
switch (argc) {
case 3:
sscanf(argv[2], "%lf", &mpu_clock);
case 2:
sscanf(argv[1], "%d", &count);
break;
default:
fprintf(stderr, "使用法: %s ループ回数 [MPU_CLOCK(MHz)]\n", op_name);
return;
}
ssp = B_SUPER(0);
result = optime(op_main, op_init, op_tini, count);
B_SUPER(ssp);
if (result == -1) {
fprintf(stderr, "%s: Timer-Dが使用中です\n", op_name);
return;
}
each_microsec = result / (double)count;
each_clock = each_microsec * mpu_clock;
printf("[%s] total=%d(μs) count=%d each=%.4g(μs) each=%.4g(clock/%.4gMHz)\n",
op_name, result, count, each_microsec, each_clock, mpu_clock);
}